package gbase

// 通用策略模式
type IStrategy[T any] interface {

	// 获取类型，用于区分不同的策略
	GetType() int

	SetCtx(ctx *Ctx)
	GetCtx() *Ctx

	Process() (T, error)
}

type BaseStrategy struct {

	//策略上下文
	ctx *Ctx
}

func (s *BaseStrategy) SetCtx(ctx *Ctx) {
	s.ctx = ctx
}
func (s *BaseStrategy) GetCtx() *Ctx {
	return s.ctx
}
func (s *BaseStrategy) GetType() int {
	return 0
}
